
/* 
1 页面加载的时候
  1 从缓存中获取购物车数据 渲染到页面中
    这些数据  checked=true 
2 微信支付
  1 哪些人 哪些帐号 可以实现微信支付
    1 企业帐号 
    2 企业帐号的小程序后台中 必须 给开发者 添加上白名单 
      1 一个 appid 可以同时绑定多个开发者
      2 这些开发者就可以公用这个appid 和 它的开发权限  
3 支付按钮
  1 先判断缓存中有没有token
  2 没有 跳转到授权页面 进行获取token 
  3 有token,进行下面操作
  4 创建订单 获取订单编号
  5 已经完成了微信支付
  6 手动删除缓存中 已经被选中了的商品 
  7 删除后的购物车数据 填充回缓存
  8 再跳转页面 
 */
import { getSetting, chooseAddress, openSetting, showModal, showToast, requestPayment } from "../../utils/asyncWx.js";
import { request } from "../../request/http";
Page({
  data: {
    address: {},
    cart: [],
    totalPrice: 0,
    totalNum: 0
  },
  onShow() {
       //渲染选中的数据
       let cart=wx.getStorageSync('cart')
       let address=wx.getStorageSync('address')
       //把选中的筛选出来
       cart=cart.filter(item=>item.checked==true)
       let totalPrice=0,totalNum=0
       cart.forEach(item=>{
        totalPrice+=(item.goods_price*item.num) 
        totalNum+=item.num
       })
       this.setData({
           cart,
           address,
           totalPrice,
           totalNum
       })
  
  },
  // 点击 支付 
  async handleOrderPay() {
      //1.判断有没有token
      let token=wx.getStorageSync('token')
      if(!token){
          wx.navigateTo({
            url: '../auth/index',
          })
          return false
      }
      //2.有token话-创建订单-  创建订单,要传参-订单总价,收货地址,所有要支付的商品信息
    let order_price=this.data.totalPrice
    let  consignee_addr=this.data.address.all
    let cart=this.data.cart.filter(item=>item.checked==true)
    let arr=[]
    cart.forEach(item=>{
        arr.push({"goods_id":item.goods_id,"goods_number":item.num,"goods_price":item.goods_price}) 
    })
    let res=await  request({url:'my/orders/create',method:'post',data:{
        order_price:order_price,
        consignee_addr:consignee_addr,
        // goods:{"goods_id":11,"goods_number":12,"goods_price":13}
        goods:arr
      }})
     console.log(66,res);

     //3.传入订单编号，生成预支付订单
     if(res.meta.status===200){
          let order_number=res.message.order_number
          console.log('创建订单成功',res.meta.msg);
          wx.showToast({
            title: res.meta.msg,
          })
          
          //3.1 在第三方支付接口服务器,生成预支付订单
          let res1=await  request({url:'my/orders/req_unifiedorder',method:'post',data:{
          order_number:order_number
          }})
          if(res1.meta.status===200){
            console.log('89创建预支付成功',res1);
            wx.showToast({
                title: res1.meta.msg,
            })
            let pay=res1.message.pay

            //4.拉起微信的支付窗口，如果有权限就弹出支付二维码，等待用户支付
             wx.requestPayment({
              // timeStamp: '',
              // nonceStr: '',
              // package: '',
              // signType: 'MD5',
              // paySign: '',
              //解构下
               ...pay,
                success (res2) {
                   console.log('拉起二维码成功', res2)
                    //因为账号没权限(微信支付权限)，拉起后返回失败，没权限
                    
                },
               fail (err2) {
                console.log('拉起二维码失败', err2)
                }
             })

          }

          //5.查询订单支付状态，提醒用户是否支付成功
         let res3=await request({url:'my/orders/chkOrder',method:'post',data:{
          order_number:order_number
          }})
          console.log('最终支付状态',res3);
          if(res3.meta.status===200){
               wx.showToast({
                 title: res3.meta.msg,
               })
               wx.navigateTo({
                 url: '../order/index',
               })
          }
          else{
            wx.showToast({
              title:'支付失败，请重新支付',
            })

          }
          
     }
      
  }

})



